package com.ygxsk.carhome.ui.usercenter;

import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.AppUtils;
import com.blankj.utilcode.util.NotificationUtils;
import com.blankj.utilcode.util.StringUtils;
import com.gyf.immersionbar.ImmersionBar;
import com.suke.widget.SwitchButton;
import com.tencent.mmkv.MMKV;
import com.ygxsk.carhome.R;
import com.ygxsk.carhome.alertview.AlertView;
import com.ygxsk.carhome.alertview.OnItemClickListener;
import com.ygxsk.carhome.constant.ConstantSign;
import com.ygxsk.carhome.listener.Delivery;
import com.ygxsk.carhome.listener.DoubleClickListener;
import com.ygxsk.carhome.ui.ErrorActivity;
import com.ygxsk.carhome.utils.CommUtils;

import butterknife.BindView;
import butterknife.OnClick;

/*
 * @Author:itchenqi175@163.com
 * @Time:2023-07-10  10:35
 * @Description:消息推送的设置界面关于声音的开关或者关闭推送等问题
 */
public class PushUmSettingActivity extends ErrorActivity {

    /**
     * 系统消息设置
     */
    @BindView(R.id.relativemessagesystemset)
    RelativeLayout relativeMessageSystemset;

    /**
     * 系统消息设置里边关于通知的是否开启的状态查询
     */
    @BindView(R.id.textviewmessagestate)
    TextView textviewMessageState;

    /**
     * 通知的横幅通知
     */
    @BindView(R.id.switchbuttonappbanners)
    SwitchButton switchButtonAppBanners;


    /**
     * 通知的声音提醒
     */
    @BindView(R.id.switchbuttonappsound)
    SwitchButton switchButtonAppSound;


    /**
     * 通知的震动提醒
     */
    @BindView(R.id.switchbuttonappshock)
    SwitchButton switchButtonAppShock;


    /**
     * 通知的午休免打扰模式
     */
    @BindView(R.id.switchbuttonappmiddayrest)
    SwitchButton switchButtonAppMiddayrest;

    /**
     * 清空全部消息的内容
     */
    @BindView(R.id.relativecleanmessage)
    RelativeLayout relativeCleanMessage;

    /**
     * 个性化推荐开关
     */
    @BindView(R.id.switchbuttonapppersonalized)
    SwitchButton switchButtonAppPersonalized;

    /**
     * 添加友盟SDK的操作
     */
//    private PushAgent mPushAgent;
    /**
     * 弹窗消息内容
     */
    private AlertView mAlertView;


    @OnClick({
            R.id.relativemessagesystemset,//系统消息设置
            R.id.relativecleanmessage,//清空全部消息
    })
    public void OnClickInPushSetting(View view) {

        switch (view.getId()) {

            case R.id.relativemessagesystemset: {

                if (!DoubleClickListener.isFastDoubleClick()) {

                    //打开系统的通知设置界面.具体的让用户自己设置通知
                    AppUtils.launchAppDetailsSettings();

                }

                break;
            }


            case R.id.relativecleanmessage: {

                if (!DoubleClickListener.isFastDoubleClick()) {

                    //有个消息弹窗通知
                    CommUtils.checkDialog(mAlertView);

                    mAlertView = CommUtils.method_showAlertViewTwoButton(mActivityInstance,//
                            StringUtils.getString(R.string.hometimecancel),//
                            StringUtils.getString(R.string.umengdelete),//
                            getString(R.string.sureclearmessage),//
                            false, new OnItemClickListener() {//
                                @Override
                                public void onItemClick(Object o, int position) {

                                    if (position != AlertView.CANCELPOSITION) {

                                        //这种是清空 消息通知的这一类消息。 取消所有通知
                                        //应用相关的通知的清除
                                        NotificationUtils.cancelAll();

                                        //相关的消息推送的通知的清除
                                        //UTrack.getInstance(mActivityInstance).setClearPrevMessage(true);
                                        //UTrack.getInstance(mActivityInstance).

                                        //LogUtils.d("itchen---->点击了清空消息");

                                    }

                                }
                            });//

                    mAlertView.show();

                }

                break;
            }

            default:
                break;
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mActivityInstance = this;

        initViews();

        //这里启动友盟的SDK的信息，然后使用SDK内部做变更。
//        mPushAgent = PushAgent.getInstance(this);


    }

//    @Override
//    protected void initImmersionBar() {
//        super.initImmersionBar();
//
//        ImmersionBar.with(this)//
//                .titleBar(R.id.toolbarygxskout)
//                .fitsSystemWindows(true)//解决状态栏和布局重叠问题，任选其一，默认为false，当为true时一定要指定statusBarColor()，不然状态栏为透明色，还有一些重载方法
//                //.statusBarColor(R.color.colorPrimary)//
//                //.navigationBarColor(R.color.colorPrimary)//
//                //.keyboardEnable(true)
//                .init();
//    }

    @Override
    protected void onResume() {
        super.onResume();

        methodInitTextIsOpen();

    }

    /*@Override
    protected void onStop() {
        super.onStop();
        //在这里添加监听是否设置通知的监听
    }*/

    @Override
    protected int getContentViewId() {
        return R.layout.activity_push_um_setting;
    }


    @Override
    protected void initToolBar(ToolbarHelper toolbarHelper) {

        toolbarHelper.setTitle(getString(R.string.title_message_setting));//
        toolbarHelper.setVersionName(true, AppUtils.getAppVersionName());
        toolbarHelper.setLayoutLeft(true,//
                R.drawable.backicon,//
                new View.OnClickListener() {//

                    @Override
                    public void onClick(View v) {

                        methodBack();

                    }
                });

        toolbarHelper.setLayoutClose(false, "", null);

        toolbarHelper.setLayoutRight(false,//
                0, //
                "", //
                null);//


    }

    @Override
    protected void initImmersionBar() {
        super.initImmersionBar();

        ImmersionBar.with(this)//
                .titleBar(R.id.toolbarygxskout)
                .fitsSystemWindows(true)//解决状态栏和布局重叠问题，任选其一，默认为false，当为true时一定要指定statusBarColor()，不然状态栏为透明色，还有一些重载方法
                //.statusBarColor(R.color.colorPrimary)//
                //.navigationBarColor(R.color.colorPrimary)//
                //.keyboardEnable(true)
                .init();

//        ImmersionBar.with(this)//
//                .titleBar(R.id.toolbarygxskout)
//                .fitsSystemWindows(true)//解决状态栏和布局重叠问题，任选其一，默认为false，当为true时一定要指定statusBarColor()，不然状态栏为透明色，还有一些重载方法
//                //.statusBarColor(R.color.colorPrimary)//
//                //.navigationBarColor(R.color.colorPrimary)//
//                //.keyboardEnable(true)
//                .init();

    }

    @Override
    protected void onClickNodata(View v) {

        //这个用不到

    }

    @Override
    protected void initViews() {

        //--------------------------------------------------------------------
        //设置 系统消息通知内 的通知是否打开
        methodInitTextIsOpen();

        //开关按钮的上次设置的显示状态
        switchButtonAppBanners.setChecked(MMKV.defaultMMKV().decodeBool(ConstantSign.P_SWITCHBUTTONAPPBANNERS));
        switchButtonAppSound.setChecked(MMKV.defaultMMKV().decodeBool(ConstantSign.P_SWITCHBUTTONAPPSOUND));
        switchButtonAppShock.setChecked(MMKV.defaultMMKV().decodeBool(ConstantSign.P_SWITCHBUTTONAPPSHOCK));
        switchButtonAppMiddayrest.setChecked(MMKV.defaultMMKV().decodeBool(ConstantSign.P_SWITCHBUTTONAPPMIDDAYREST));
        switchButtonAppPersonalized.setChecked(MMKV.defaultMMKV().decodeBool(ConstantSign.P_SWITCHBUTTONAPPPERSONALIZED));

        //--------------------------------------------------------------------
        //横幅通知的设置
        switchButtonAppBanners.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {

            /**
             * Called when the checked state of a compound button has changed.
             *
             * @param view The compound button view whose state has changed.
             * @param isChecked  The new checked state of buttonView.
             */
            @Override
            public void onCheckedChanged(SwitchButton view, boolean isChecked) {

                //LogUtils.d("itchen--->switchButtonAppBanners 操作之后 开关是：" + isChecked);

                //如果是开的，那么设置关闭，下次打开还是关闭
                //如果是关的，那么设置打开，下次打开还是打开
                MMKV.defaultMMKV().encode(ConstantSign.P_SWITCHBUTTONAPPBANNERS, isChecked);

                //如果这次关闭应用内通知，那么 就关闭友盟的通知：
//                if (mPushAgent != null) {
//
//                    if (isChecked) {
//                        //LogUtils.d("itchen---->设置 友盟APP内 通知是开启的");
//                        mPushAgent.setNotificationOnForeground(true);
//                    } else {
//                        //LogUtils.d("itchen---->设置 友盟APP内 通知是关闭的");
//                        mPushAgent.setNotificationOnForeground(false);
//                    }
//
//                }

            }

        });


        //--------------------------------------------------------------------
        //设置声音提醒
        switchButtonAppSound.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(SwitchButton view, boolean isChecked) {

                //LogUtils.d("itchen--->switchButtonAppSound 操作之后 开关是：" + isChecked);

                //如果是开的，那么设置关闭，下次打开还是关闭
                //如果是关的，那么设置打开，下次打开还是打开
                MMKV.defaultMMKV().encode(ConstantSign.P_SWITCHBUTTONAPPSOUND, isChecked);

//                if (mPushAgent != null) {
//
//                    if (isChecked) {
//                        //LogUtils.d("itchen---->设置 友盟声音 是开启的");
//                        mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);
//                    } else {
//                        //LogUtils.d("itchen---->设置 友盟声音 是关闭的");
//                        mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SDK_ENABLE);
//                    }
//
//                }


            }
        });

        //--------------------------------------------------------------------

        //设置震动提醒
        switchButtonAppShock.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(SwitchButton view, boolean isChecked) {

                //LogUtils.d("itchen--->switchButtonAppShock 操作之后 开关是：" + isChecked);

                //如果是开的，那么设置关闭，下次打开还是关闭
                //如果是关的，那么设置打开，下次打开还是打开
                MMKV.defaultMMKV().encode(ConstantSign.P_SWITCHBUTTONAPPSHOCK, isChecked);

//                if (mPushAgent != null) {
//
//                    if (isChecked) {
//                        //LogUtils.d("itchen---->设置 友盟震动 是开启的");
//                        mPushAgent.setNotificationPlayVibrate(MsgConstant.NOTIFICATION_PLAY_SDK_ENABLE);//客户端可以
//                    } else {
//                        //LogUtils.d("itchen---->设置 友盟震动 是关闭的");
//                        mPushAgent.setNotificationPlayVibrate(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);//客户端禁止振动
//                    }
//
//                }

            }
        });
        //--------------------------------------------------------------------

        //设置午休免打扰
        switchButtonAppMiddayrest.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(SwitchButton view, boolean isChecked) {

                //LogUtils.d("itchen--->switchButtonAppMiddayrest 操作之后 开关是：" + isChecked);

                //如果是开的，那么设置关闭，下次打开还是关闭
                //如果是关的，那么设置打开，下次打开还是打开
                MMKV.defaultMMKV().encode(ConstantSign.P_SWITCHBUTTONAPPMIDDAYREST, isChecked);

//                if (mPushAgent != null) {
//
//                    if (isChecked) {
//
//                        //12:00--14:00
//                        //LogUtils.d("itchen---->设置 免打扰模式 是开启的,就是 要求 免打扰");
//                        mPushAgent.setNoDisturbMode(12, 0, 14, 0);
//
//                    } else {
//
//                        //LogUtils.d("itchen---->设置 免打扰模式 是关闭的，就是 不要求 免打扰 ");
//                        //开启夜间免打扰模式：
//                        mPushAgent.setNoDisturbMode(23, 0, 7, 0);
//
//                    }
//
//                }


            }
        });


        //设置个性化推荐开关
        switchButtonAppPersonalized.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(SwitchButton view, boolean isChecked) {

                //LogUtils.d("itchen--->switchButtonAppMiddayrest 操作之后 开关是：" + isChecked);

                //如果是开的，那么设置关闭，下次打开还是关闭
                //如果是关的，那么设置打开，下次打开还是打开
                MMKV.defaultMMKV().encode(ConstantSign.P_SWITCHBUTTONAPPPERSONALIZED, isChecked);

//                if (mPushAgent != null) {
//
//                    if (isChecked) {
//
//                        //12:00--14:00
//                        //LogUtils.d("itchen---->设置 个性化推荐 打开，放开友盟消息推送");
//                        mPushAgent.setNotificationOnForeground(true);
//
//                    } else {
//
//                        //LogUtils.d("itchen---->设置 个性化推荐 关闭，关闭友盟消息推送 ");
//                        //开启夜间免打扰模式：
//                        mPushAgent.setNotificationOnForeground(true);
//
//                    }
//
//                }


            }
        });

        //--------------------------------------------------------------------------------------------------------

    }

    /**
     * 设置声音的消息通知是否开启
     */
    private void methodInitTextIsOpen() {

        Delivery.getInstance().post(new Runnable() {
            @Override
            public void run() {

                boolean isOpen = NotificationUtils.areNotificationsEnabled();
                if (isOpen) {//如果通知是可用的
                    textviewMessageState.setText("已开启");
                } else {
                    textviewMessageState.setText("未开启，去“设置”修改");
                }

            }
        });

    }

    @Override
    protected void gainDatas() {

        //这里暂时没有设置接口相关的

    }

    @Override
    protected void methodBack() {

        if (ActivityUtils.isActivityAlive(mActivityInstance)) {
            ActivityUtils.finishActivity(mActivityInstance);
        }

    }
}